package suanfajingpinke;

import java.util.HashMap;
import java.util.Map;

public class Test7 {
    //题目：力扣  1419数青蛙
    //算法：模拟 + 哈希表  分情况讨论
    public int minNumberOfFrogs(String croakOfFrogs) {
        //我们要找蛙声的每一个字符  先定义出蛙声
        String ret = "croak";
        int n = ret.length();
        //用数组模拟一个哈希表
        int[] hash = new int[n];
        //字符串转为字符数组
        char[] cs = croakOfFrogs.toCharArray();

        //在这里我们还要一个映射关系  字符 映射到对应下标 new 一个哈希表
        Map<Character,Integer> map = new HashMap<>();
        for(int i = 0; i < n; i++) {
            map.put(ret.charAt(i),i);
        }
        for(char ch : cs) {
            //先判断一下'c'
            if(ch == ret.charAt(0)) {
                if(hash[n-1] != 0) hash[n-1]--;
                hash[0]++;
            }else{
                //其他字符
                //获取一下对应的下标
                int i = map.get(ch);
                if(hash[i-1] != 0) {
                    hash[i-1]--;
                    hash[i]++;
                }else{
                    return -1;
                }

            }
        }
        //叫完之后 hash数组中还有字符个数不为0  那说明字符串不合法
        for(int i = 0; i < n-1; i++) {
            if(hash[i] != 0) return -1;
        }
        //最少多少只青蛙 就是 k有多少次叫  因为叫完k就可以继续叫下一声
        return hash[n-1];
    }
}

